import 'package:flutter/material.dart';

/**
 * 
 * Flutter客户端打包(安卓)
 * 
 * 
 * 配置APP的图标
    * 想配置APP的图片，你需要找到下面的目录：
    * 项目根目录/android/app/src/main/res/
    * 进入之后你会看到很多mipmap-为前缀命名的文件夹，后边的是像素密度，可以看出图标的分辨率。
    * 
    * 将对应像素密度的图片放入对应的文件夹中,图片记得用png格式，记得名字要统一，才能一次性进行配置。
 * 
 * 
 * 
 * 配置APP的名称、图标和系统权限
    * 项目根目录/android/app/src/main/AndroidManifest.xml
    * android:label="flutter_app"   //配置APP的名称，支持中文
    * android:icon="@mipmap/ic_launcher" //APP图标的文件名称
 * 
 * 
 * 生成 keystore（坑挺多）
    * 直接运行会报错,报找不到目录，或者没权限，实际是需要配置环境变量，但是也可以不配，按下面继续做
    * keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
    * 
    * 这时候可以用下面的命令找到keytool.exe的位置。
    * flutter doctor -v  运行该命令，找到java binary at 这个目录就是要找的目录
    * 这时候你直接拷贝命令并进行输入，但这里也有个坑，就是如果文件夹中间带有空空，你需要用带引号扩上
    * D:\Program\Android\'Android Studio'\jre\bin\keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
    * 注意点，需要把目录的最后的java去掉，用keytool代替
    * 
    * 允许还是会报错
    * 这个错误的主要问题是目录不存在和没有写权限，所以我们要更换一个有写权限的目录。我们把命令改成了下面的形式。
    * D:\Program\Android\'Android Studio'\jre\bin\keytool -genkey -v -keystore D:\key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
    * 
    * 这时候就可以创建成功了。你的D盘下面就会有一个Jks的文件，记住这个文件不能共享给任何人。
 * 
 * 会有一堆的提示，一路回车，最后y就行，还会提示'如果和密钥裤口令相同，按回车' 这个要注意，照着之前的密码输入，不然这个key文件有问题
 * 
 * 有了这个key.jks文件后，可以到项目目录下的android文件夹下，创建一个名为key.properties的文件，并打开粘贴下面的代码。
 *  storePassword=<password from previous step>    //输入上一步创建KEY时输入的 密钥库 密码
    keyPassword=<password from previous step>    //输入上一步创建KEY时输入的 密钥 密码
    keyAlias=key
    storeFile=<E:/key.jks>    //key.jks的存放路径
 * 
 * 我的文件最后是这样的：
 *  storePassword=123123
    keyPassword=123123
    keyAlias=key
    storeFile=D:/key.jks
 * 
 * 
 * 配置key注册
 * key生成好后，需要在build.gradle文件中进行配置。这个过程其实很简单，就是粘贴复制一些东西，你是不需要知道这些文件的具体用处的。
 * 
 * 第一项：

      进入项目目录的/android/app/build.gradle文件，在android{这一行前面,加入如下代码：
      def keystorePropertiesFile = rootProject.file("key.properties")
      def keystoreProperties = new Properties()
      keystoreProperties.load(new FileInputStream(keystorePropertiesFile))


  把如下代码进行替换

  buildTypes {
      release {
          signingConfig signingConfigs.debug
      }
  }

  替换成的代码：
  signingConfigs {
      release {
          keyAlias keystoreProperties['keyAlias']
          keyPassword keystoreProperties['keyPassword']
          storeFile file(keystoreProperties['storeFile'])
          storePassword keystoreProperties['storePassword']
      }
  }
  buildTypes {
      release {
          signingConfig signingConfigs.release
      }
  }
 * 
 * 
 * 生成apk
 * 直接在终端中输入：
 * flutter build apk
 * 
 * 
 * 安装包最后放在'build/app/outputs/apk/release/app-release.apk' 里面
 *  */ 

void main()=>runApp(
  MaterialApp(
    title: '里面点击给外面通知',
    home: lookXiaojiejie(),
  )
);

class lookXiaojiejie extends StatelessWidget{
  @override

  Widget build(BuildContext context){
    return Scaffold(
      appBar: AppBar(title: new Text('找小姐姐'),),
      body: Center(
        child: routerButton(),
      ),
    );
  }

}

// 跳转的button
class routerButton extends StatelessWidget{
  @override

  Widget build(BuildContext context){
    return RaisedButton(
      onPressed: (){
        navigatorXiaoJieJie(context);
      },
      child: Text('跳转找小姐姐'),
    );
  }

  navigatorXiaoJieJie(BuildContext context) async{ //async是启动异步方法
    final result = await Navigator.push(
      context, 
      MaterialPageRoute(
        builder: (context)=>xiaojieijeList()
      )
    );
    // 类似toal弹窗，会自动消失
    Scaffold.of(context).showSnackBar(SnackBar(content:Text('$result')));
  }
}

// 内页列表
class xiaojieijeList extends StatelessWidget{
  @override
  Widget build(BuildContext context){
    return Scaffold(
      appBar: AppBar(
        title: new Text('小姐姐列表'),
      ),
      body: Column(
        children: <Widget>[
          RaisedButton(
            child: new Text('小姐姐1号'),
            onPressed: (){
              // 返回数据其实是特别容易的，只要在返回时带第二个参数就可以了。
              // Navigator.pop(context,'xxxx');  //xxx就是返回的参数
              Navigator.pop(context,'我是小姐姐1号');
            },
          ),
          RaisedButton(
            child: new Text('小姐姐2号'),
            onPressed: (){
              Navigator.pop(context,'我是小姐姐2号');
            },
          )
        ],
      ),
    );
  }
}